Seminario Python - 1/2013 - Grupo 1
Python é uma linguagem de programação de alto nível que suporta múltiplos paradigmas de programação, podendo ser imperativa, orientada a objetos ou funcional. É distribuída livremente podendo ser baixadas do site oficial da linguagem, www.python.org 1. Historia Python foi criada no final da década de 80 e lançada em 1991 por Guido van Rossum, que trabalhou na Google de 2005 até 2012 e hoje trabalha na dropbox além de supervisionar o desenvolvimento de python até hoje. A versão mais atual da linguagem Python é a 3.3.2, mas a partir do python 3.0 passou a existir uma grande falta de retrocompatibilidade implicando na continuidade do desenvolvimento do python 2 que atualmente se encontra na versão 2.7.5. 2. Diretrizes 2.1 Premissas Python tem suporte total à programação orienta a objetos e programação estruturada, além de suportar programação funcional e lógica, embora de forma limitada. A filosofia de python visa a legibilidade, a capacidade de escrita e a velocidade de desenvolvimento, sendo uma linguagem de fácil aprendizagem e que permite programadores fazerem mais com menos esforço. Python também rejeita a ideia de ter mais de uma forma de fazer algo, preferindo a abordagem “deve existir uma, e de preferência apenas uma forma óbvia de se fazer algo”. 2.2 Usuario característico -Youtube -Dropbox -Google -EVE online -NASA -Embratel 2.3 Domínio de aplicação Python é usado em diversos domínios de aplicações, como desenvolvimento web, programação de banco de dados, desenvolvimento de software, interfaces gráficas com usuário (GUIs), jogos e gráficos 3D. 3. Características 3.1 Interpretada Ao contrário das linguagens compiladas, que transformam o código escrito dos programas para uma plataforma especifica, por exemplo, Windows ou Linux, Python transforma o código do programa em bytecodes e estes são executados por um interpretador, o que possibilita o aplicativo ser executado em várias plataformas com poucas ou mesmo nenhuma alteração. 3.2 Código-aberto Python é absolutamente livre, mesmo para fins comerciais, permitindo a venda de um produto escrito em Python, ou um produto que venha com o interpretador embutidos em pagar taxas ou licenças para isso. 3.3 Tipagem dinâmica e forte Tipagem dinâmica se refere à linguagem não associar tipos às variáveis e sim aos seus valores; e como tipagem forte, entende-se que não é possível realizar operações com valores que possuem tipos incompatíveis de dados, como, por exemplo, unir um número a uma string. 3.4 Interpretador interativo Python possui um interpretador interativo que permite testar códigos de maneira fácil e rápida, sem a necessidade de criar um arquivo só para testar um bloco de código. 3.5 Tudo em Python é um objeto Tudo em Python - módulos, tipos de dados, variáveis, classes e funções, são objetos e como tais, possuem atributos (dados) e métodos (funções) vinculados que permitem manipular esses atributos. 3.6 Suporte à múltiplos paradigmas de programação Paradigmas de programação são estilos de resolver problemas específicos na engenharia de softwares. Há vários paradigmas de programação e cada um é mais adequado para resolver um problema de maneira mais fácil do que o outro. Python suporta os seguintes paradigmas de programação: 3.6.1 Imperativa: -Comandos e atualização de variáveis; -Von Neumann, permite o acesso direto e possibilidade de alteração de valores armazenados em posições de memória; -Estados, representam as células de memória que armazena os dados antes de depois do processamento; -Ordens sequênciais; -Intruções de atribuição; 3.6.2 Procedural: -Baseado na imperativa; -Conceito de rotinas, métodos ou funções; -Reutilização de código; -Forma mais fácil de organizar o fluxo; -Habilidade de modulação; 3.6.3 Orientado a objetos; -Baseado na composição e interação entre objetos; -Objetos são conjuntos de operações encapsuladas e um estado; -Em python existem decoradores, que mudam características de uma função ou método. O “@classmethod” faz o método acessar variaveis “estáticas” da classe e o “@staticmethod” faz com que o método seja estático. 3.6.4 Funcional: -Python pode utilizar o paradigma funcional, porém isto não é recomendado, pois não há: -Pattern Matching -Tail Recursion -Bibliotecas com muitas funções para listas -Classe dicionário funcional -Funções compostas concisas -Funções de alta ordem -Preguiçosa 4. Construtores 4.1 palavras reservadas 4.2 tipos de dados 4.3 Operadores 4.3.1 operadores aritméticos + (Soma) - (Subtração) * (Multiplicação) / (Divisão) // (Divisão truncada) % (Módulo) ** (Exponenciação) 4.3.2 operadores lógicos > (Maior) < (Menor) >= (Maior ou igual) <= (Menor ou igual) (Igual) not (Não) != (Não-igual) and (E) or (Ou) 4.3.3 estruturas condicionais -if -else -elif (else if) 4.3.4 laços de repetição -for -while -break -continue 4.3.5 tratamento de exceções -try -except -finnaly 4.4 Modulos Python pode ser modularizado de forma parecida com java, onde o header e source estão no mesmo arquivo.Pode-se importar o módulo, uma função do módulo ou todas as funções do módulo. Import , from import, from import * 4.5 Sintaxe #bloco externo class Exemplo: #bloco interno def __init__ (self, valor1,valor2) self.valor1 = valor1 self.valor2 = valor2 #outro bloco var = Exemplo() print(var.valor1) 5. Critérios de avaliação de uma linguagem 5.1 Legibilidade Python é uma linguagem altamente legível, afinal ela foi criada com essa intenção. A sintaxe de python não possui tantos caracteres não alfanuméricos como em outras linguagens, portanto o código escrito em python se assemelha mais a um texto. Os blocos de código são delimitados pela identação ao invés de caracteres especiais como chaves em C, isso não só reduz a quantidade de caracteres não alfanuméricos no código como obriga o programador a identetar o código, o que costuma ser feito em outras linguagens somente para aumentar a legibilidade. 5.2 Capacidade de escrita Embora python priorize a legibilidade sobre a expressividade, ela ainda possui uma boa capacidade de escrita. Python tem uma sintaxe é clara e concisa, uma grande biblioteca padrão com recursos poderosos. Python possui alta capacidade de abstração através das classes, facilitando o reuso. Também é possível usar uma função como parâmetro de outra função, armazenar funções como atributos de uma estrutura de dados e retornar funções como resultado de uma expressão. 5.3 Confiabilidade 5.3.1 Verificação de tipos Python é uma linguagem dinamicamente e fortemente tipada ao mesmo tempo e possui interferência de tipos. Mas, a verificação de tipos não realiza uma conversão implícita de um tipo de dado para outro, dando exceções quando tipos inconsistentes são utilizados. Python realiza uma nova vinculação de nome e espaço a cada atribuição de valor a uma variável, inferindo o tipo de dados do valor recebido. Além disso ela não possui definição de tipos nos parâmetros de funções ou métodos, deixando a cargo no programador o tratamento dos tipos recebidos e retornados 5.3.2 Manipulação de exceções Python tem o suporte nativo ao tratamento de exceções, incluindo a definição de novos tipos de exceção. Nela as exceções definidas pelo usuário utilizam o conceito de herança da orientação a objetos. Exception é a classe base na qual todas as outras exceções são derivadas. E como existe a unificação entre classes e tipos, e subclasses são subtipos, ao tratar uma exceção de um determinada classe todas as subclasses dessa exceção também serão tratadas. 5.3.3 Conclusão Python foi desenvolvida para ser uma linguagem de propósito geral e consegue alcançar esse objetivo ao englobar o paradigma funcional, orientado a objetos e imperativo. A linguagem possui um grau de flexibilidade muito alto e isso tem impacto na sua confiabilidade, mas que é contrabalanceado com um modelo de objetos elegante, tratamento de exceções nativo e orientado a objetos e alta capacidade de abstração e recursos da programação funcional. A sua capacidade de escrita é alta para domínio de negócios e domínios mistos. 5.4 Custo 5.4.1 Treinamento Devido à legibilidade e simplicidade de python o custo de treinamento é baixo. 5.4.2 Escrever programas A alta capacidade de escrita e a legibilidade de python deixam não só o custo de escrever programas mas também o custo de manutenção de programas baixo. 5.4.3 Compilar e executar programas Python é uma linguagem interpretada, mas o código fonte é traduzido para um formato intermediário chamado de byte code o qual é interpretado. Como uma linguagem interpretada, sua velocidade de execução não é tão rápida como de linguagens compiladas. Estes fatores fazem o custo de compilação e de execução serem altos. 5.5 Qualidade da definição Python é uma linguagem open source com uma comunidade muito ampla espalhada pelo mundo, portanto a documentação é muito bem definida, podendo ser encontrada a original em inglês através site oficial, www.pyhton.org, e em português através do site www.python.org.br. 6. Bibliografia SEBESTA, Robert W., Concepts of Programming Languages 7 ed. http://www.python.org/ http://www.scribd.com/doc/143052578/43/Identidade-de-objetos http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_funcional http://en.wikipedia.org/wiki/Python_%28programming_language%29 http://en.wikipedia.org/wiki/Scheme_%28programming_language%29 7. Grupo -Joao Victor Santos Aguiar -Guilherme Branco -Thiago Penha -Matheus Andrade -Bruno Rodrigues